package com.zret.oasys.dao;

import java.util.List;

import java.util.List;

import com.zret.oasys.dbtools.PageData;
import com.zret.oasys.entity.Attence;
import com.zret.oasys.entity.AttenceTable;
import com.zret.oasys.entity.Emp;

public interface AttendanceDao {
	/**
	 * 增加考勤表信息
	 * @param attence 考勤对象
	 * @return  true增加考勤表成功，false增加失败
	 */
	public boolean addAttendance(Attence attence);
	
	/**
	 * 删除考勤表
	 * @param serialnum 考勤流水号
	 * @return true删除成功，反之删除失败
	 */
	public boolean delAttendance(int serialnum); 
	
	
	/**
	 * 根据员工编号查询考勤记录(分页)
	 * @param empid 员工编号
	 * @return  考勤表list
	 */
	public PageData<Attence> getAttendanceByEmpidPage(int empid);
	
	
	
	/**
	 * 根据考勤日期获取考勤记录（分页）
	 * @param page 当前页
	 * @param pageSize  每页记录数
	 * @param attencetime 考勤日期
	 * @return   PageData<AttenceTable>   泛型：AttenceTable实体类是多表联合查询创建的实体类
	 */
	public PageData<AttenceTable> getAttendanceByDatePage(int page,int pageSize,String attencetime);
	

	
	/**
	 * 根据考勤的状态查询(分页)
	 * @param page 当前页码
	 * @param pageSize 每页显示的记录数
	 * @param attencetype
	 * @return
	 */
	public PageData<Attence> getAttendanceByTypePage(int page,int pageSize,String attencetype);
	
	
	
	/**
	 * 根据流水号修改员工考勤状态
	 * @param serialnum 流水号
	 * @param attencetype 考勤状态（到岗，迟到，请假，旷工）
	 * @return ture修改成功
	 */
	public boolean updateAttendanceType(long serialnum,String attencetype);
	
	
	/**
	 * 根据考勤的状态查询
	 * @param attencetype 考勤状态类型
	 * @return List<Attence>
	 */
	public List<Attence> getAttendanceByType(String attencetype);
	
	
	
	
	/**
	 * 根据员工id,考勤类型和考勤时间模糊查询（如：2020-05-08来查询，我们想查是当前日期）
	 * @param empid 员工编号
	 * @param attencetime 当前日期  如2020-05-08 不包含时间
	 * @param attencetype 考勤类型状态
	 * @return List<Attence>
	 */
	public List<Attence> getAttendanceByIdTypeTime(int empid,String attencetime,String attencetype);
	
	


	/**
	 * 根据员工id,日期考勤开始和结束时间和考勤类型来查询 (如可根据当前日期，查询不同时间段) [ ] 双闭合时间和半闭合( ] 
	 * 后续可扩展
	 * @param select 选择要执行的sql 比如1,2,3
	 * @param empid 员工id
	 * @param dateString 日期
	 * @param starttime 开始时间
	 * @param endtime  结束时间
	 * @param attencetype 考勤类型
	 * @return List<Attence>
	 */
	public List<Attence> getAttendByIdStarEndTimeType(String select,int empid,String dateString,String starttime,String endtime,String attencetype);
	
	
	
	/**
	 * 联合查询，考勤表和员工表联合查询，查询员工信息（我主要目的是要获取员工id）
	 * @return List<Emp>
	 */
	public List<Emp> getAttendAndEmpIsEmpid();
	
	
	
	
	/**
	 * 根据员工id，考勤类型和考勤日期的模糊查询
	 * @param empid 员工id
	 * @param attenceDate 日期
	 * @param attencetype 考勤类型
	 * @return   List<Attence>
	 */
	public List<Attence> getAttendanceByIdLikeTypeDate(int empid,String attenceDate,String attencetype);
	
	
	
	
	
	/**
	 * 根据员工编号模糊查询日期（分页）
	 * @param empid  员工编号
	 * @param attenceDate 考勤日期（只有日期）
	 * @return PageData<Attence>
	 */
	public PageData<AttenceTable> getAttendanceByIdLikeDate(int page,int pageSize,int empid,String attenceDate);
	
	
	
	

}
